package ir.ac.iust.nlp.dependencyparser.phrasestructuregraph;
import ir.ac.iust.nlp.dependencyparser.BasePanel;
import javax.swing.JOptionPane;
import org.maltparser.core.syntaxgraph.PhraseStructureGraph;
/**
*
* @author Mojtaba Khallash
*/
public class CreatePSGPanel extends BasePanel {
PhraseStructureGraph graph;
CreatePhraseStructureGraph creator;
/**
* Creates new form CreatePSGPanel
*/
public CreatePSGPanel(String dir) {
super(dir);
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
pnlDependencyRelation = new javax.swing.JPanel();
lblHead = new javax.swing.JLabel();
cboHead = new javax.swing.JComboBox();
lblModifier = new javax.swing.JLabel();
cboModifier = new javax.swing.JComboBox();
lblLabel = new javax.swing.JLabel();
cboLabel = new javax.swing.JComboBox();
btnAddEdge = new javax.swing.JToggleButton();
pnlDependencyNode = new javax.swing.JPanel();
lblWordForm = new javax.swing.JLabel();
lblPOSTag = new javax.swing.JLabel();
txtWordForm = new javax.swing.JTextField();
btnAddNode = new javax.swing.JButton();
cboPOSTag = new javax.swing.JComboBox();
jLabel1 = new javax.swing.JLabel();
cboCategory = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
pnlDependencyRelation.setBorder(javax.swing.BorderFactory.createTitledBorder("Dependency Relation (Edge)"));
lblHead.setText("Head");
cboHead.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ROOT" }));
lblModifier.setText("Modifier");
cboModifier.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ROOT" }));
lblLabel.setText("Label");
cboLabel.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "PRED", "SUB", "OBJ", "HD" }));
btnAddEdge.setText("Add");
btnAddEdge.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAddEdge_Click(evt);
}
});
javax.swing.GroupLayout pnlDependencyRelationLayout = new javax.swing.GroupLayout(pnlDependencyRelation);
pnlDependencyRelation.setLayout(pnlDependencyRelationLayout);
pnlDependencyRelationLayout.setHorizontalGroup(
pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDependencyRelationLayout.createSequentialGroup()
.addGap(22, 22, 22)
.addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(pnlDependencyRelationLayout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 233, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnAddEdge))
.addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDependencyRelationLayout.createSequentialGroup()
.addComponent(lblHead)
.addGap(30, 30, 30)
.addComponent(cboHead, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(pnlDependencyRelationLayout.createSequentialGroup()
.addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblModifier)
.addComponent(lblLabel))
.addGap(18, 18, 18)
.addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(cboModifier, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(cboLabel, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
.addGap(31, 31, 31))
);
pnlDependencyRelationLayout.setVerticalGroup(
pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDependencyRelationLayout.createSequentialGroup()
.addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblHead)
.addComponent(cboHead, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblModifier)
.addComponent(cboModifier, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblLabel)
.addComponent(cboLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnAddEdge)
.addGap(0, 6, Short.MAX_VALUE))
);
pnlDependencyNode.setBorder(javax.swing.BorderFactory.createTitledBorder("Dependency Node"));
lblWordForm.setText("Word Form");
lblPOSTag.setText("POS Tag");
btnAddNode.setText("Add");
btnAddNode.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAddNode_Click(evt);
}
});
cboPOSTag.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "N", "V" }));
jLabel1.setText("Category");
cboCategory.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "S", "NP", "VP" }));
javax.swing.GroupLayout pnlDependencyNodeLayout = new javax.swing.GroupLayout(pnlDependencyNode);
pnlDependencyNode.setLayout(pnlDependencyNodeLayout);
pnlDependencyNodeLayout.setHorizontalGroup(
pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDependencyNodeLayout.createSequentialGroup()
.addGap(23, 23, 23)
.addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(pnlDependencyNodeLayout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(cboCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 234, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(pnlDependencyNodeLayout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(btnAddNode))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, pnlDependencyNodeLayout.createSequentialGroup()
.addComponent(lblPOSTag)
.addGap(18, 18, 18)
.addComponent(cboPOSTag, javax.swing.GroupLayout.PREFERRED_SIZE, 230, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, pnlDependencyNodeLayout.createSequentialGroup()
.addComponent(lblWordForm)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtWordForm, javax.swing.GroupLayout.PREFERRED_SIZE, 236, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(25, 25, 25))
);
pnlDependencyNodeLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cboCategory, cboPOSTag});
pnlDependencyNodeLayout.setVerticalGroup(
pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDependencyNodeLayout.createSequentialGroup()
.addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblWordForm)
.addComponent(txtWordForm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblPOSTag)
.addComponent(cboPOSTag, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(cboCategory, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnAddNode)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
jLabel2.setText("Create Phrase-Structure Graph");
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel1.setPreferredSize(new java.awt.Dimension(380, 2));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(pnlDependencyNode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, Short.MAX_VALUE)
.addComponent(pnlDependencyRelation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 720, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(pnlDependencyNode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pnlDependencyRelation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(199, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
private void btnAddEdge_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddEdge_Click
try {
creator.addPhraseStructureEdge(cboHead.getSelectedIndex(), cboModifier.getSelectedIndex(),
cboLabel.getSelectedItem().toString());
//????????????
graph = creator.getDependencyGraph();
System.out.println(graph);
} catch (Exception e) {
System.err.println("MaltParser exception : " + e.getMessage());
}
}//GEN-LAST:event_btnAddEdge_Click
private void btnAddNode_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddNode_Click
try {
creator.addPhraseStructureNode(txtWordForm.getText(), cboPOSTag.getSelectedItem().toString(),
cboCategory.getSelectedItem().toString());
cboHead.addItem(txtWordForm.getText());
cboModifier.addItem(txtWordForm.getText());
//????????????
graph = creator.getDependencyGraph();
System.out.println(graph);
} catch (Exception e) {
System.err.println("MaltParser exception : " + e.getMessage());
}
}//GEN-LAST:event_btnAddNode_Click
@Override
public boolean canSave() {
return false;
}
@Override
public void save() {
JOptionPane.showConfirmDialog(this, "Saving Create Phrase Structure Graph");
}
@Override
public void saveAs() {
save();
}
@Override
public void threadFinished() {
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JToggleButton btnAddEdge;
private javax.swing.JButton btnAddNode;
private javax.swing.JComboBox cboCategory;
private javax.swing.JComboBox cboHead;
private javax.swing.JComboBox cboLabel;
private javax.swing.JComboBox cboModifier;
private javax.swing.JComboBox cboPOSTag;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel lblHead;
private javax.swing.JLabel lblLabel;
private javax.swing.JLabel lblModifier;
private javax.swing.JLabel lblPOSTag;
private javax.swing.JLabel lblWordForm;
private javax.swing.JPanel pnlDependencyNode;
private javax.swing.JPanel pnlDependencyRelation;
private javax.swing.JTextField txtWordForm;
// End of variables declaration//GEN-END:variables
}